home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacHack 1996
/
MacHack 1996.toast
/
Hacks
/
Hacks ’92
/
Text Capture FKEY
/
patching.h
< prev
next >
Wrap
Text File
|
1992-04-13
|
815b
|
27 lines
#define PATCH(trap) Old_ ## trap = NGetTrapAddress(_ ## trap, ToolTrap );\
NSetTrapAddress( (long)My_ ## trap, _ ## trap, ToolTrap )
#define UNPATCH(trap) NSetTrapAddress( (long)Old_ ## trap,\
_ ## trap, ToolTrap )
#define HEAD_PATCH_HEADER(trapname) \
movem.l a0-a5/d0-d7, -(SP) ; a7 is SP, a6 is lunk\
LEA main, A4 ; set up globals\
bra.s @1 \
@0 dc.L 0 ; place to store old trap address\
@1 LEA @0, A0 \
move.L Old_ ## trapname, (A0) ; store it in @0
#define HEAD_PATCH_FINISH \
movem.L (SP)+, A0-A5/D0-D7 \
unlk A6 \
move.L @0, -(SP) \
RTS
#define TAIL_PATCH_FINISH(arg_bytes) \
movem.L (SP)+, A0-A5/D0-D7 ; restore registers\
unlk A6 \
move.L (SP), arg_bytes(SP) ; copy return address into args\
addI.L #+arg_bytes, SP ; pop arguments\
RTS